﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Web.Mvc;

namespace ProjectBase.Core.Diagnostics
{
    [ContractClassFor(typeof(IEntityFacade<,,>))]
    internal abstract class EntityFacade<TEntity, TID, TFilter> : IEntityFacade<TEntity, TID, TFilter>
        where TEntity : class, IPersistentObjectWithTypedId<TID>
        where TFilter : class, IFilter<TID>
    {
        public bool DeleteAll(TFilter filter)
        {
            Contract.Requires(filter.Is(), "EntityFacade<T, TID, TFilter>, method DeleteAll(), parameter 'filter' cannot be null");
            throw new NotImplementedException();
        }

        #region IReadFacade<T,TID,TFilter> Members

        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        public string ValidationRulesToString(string validationType = null)
        {
            throw new NotImplementedException();
        }
        public IEnumerable<TEntity> Find(TFilter filter)
        {
            throw new NotImplementedException();
        }

        public bool BindFilter(TFilter filter
            , IValueProvider valueProvider
            , string prefix = null)
        {
            throw new NotImplementedException();
        }

        public bool BindFilter(TFilter filter
            , IValueProvider valueProvider
            , string prefix
            , IEnumerable<string> includeProperties
            , IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }

        public TFilter CreateNewFilter()
        {
            throw new NotImplementedException();
        }
        #endregion

        #region base notimplemented

        #region IReadFacade<T,TID> Members

        public TEntity GetById(TID id)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IMessagesHolder Members

        public Messages Messages
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion

        #region IWriteFacade<T,TID> Members

        public event EventHandler Change
        {
            add
            {
                throw new NotImplementedException();
            }
            remove
            {
                throw new NotImplementedException();
            }
        }

        public TEntity CreateNew()
        {
            throw new NotImplementedException();
        }

        public TEntity Add(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public TEntity Update(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public void Delete(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public bool BindEntity(TEntity entity, IValueProvider valueProvider, string prefix = null)
        {
            throw new NotImplementedException();
        }
        public bool BindEntity(TEntity entity, IValueProvider valueProvider, string prefix, IEnumerable<string> includeProperties, IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }

        #endregion

        public bool Import(byte[] dataSource, Action<IValueProvider> processor = null)
        {
            throw new NotImplementedException();
        }

        public bool CanBeEdited(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public bool CanBeDeleted(TEntity entity)
        {
            throw new NotImplementedException();
        }
        #endregion base notimplemented

    }

    [ContractClassFor(typeof(IEntityFacade<,>))]
    internal abstract class EntityFacade<TEntity, TID> : IEntityFacade<TEntity, TID>
        where TEntity : class, IPersistentObjectWithTypedId<TID>
    {
        public bool Import(byte[] dataSource, Action<IValueProvider> processor = null)
        {
            Contract.Requires(dataSource.Is(), "EntityFacade<T, TID, TFilter>, method Import(), parameter 'dataSource' cannot be null");
            throw new NotImplementedException();
        }

        public bool CanBeEdited(TEntity entity)
        {
            Contract.Requires(entity.Is(), "EntityFacade<T, TID, TFilter>, method CanBeEdited(), parameter 'entity' cannot be null");
            throw new NotImplementedException();
        }
        public bool CanBeDeleted(TEntity entity)
        {
            Contract.Requires(entity.Is(), "EntityFacade<T, TID, TFilter>, method CanBeDeleted(), parameter 'entity' cannot be null");
            throw new NotImplementedException();
        }

        #region base notimplemented
        public IObjectBinder Binder
        {
            set { throw new NotImplementedException(); }
        }

        #region IReadFacade<T,TID> Members

        public TEntity GetById(TID id)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IMessagesHolder Members

        public Messages Messages
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion

        #region IWriteFacade<T,TID> Members

        public event EventHandler Change
        {
            add
            {
                throw new NotImplementedException();
            }
            remove
            {
                throw new NotImplementedException();
            }
        }

        public TEntity CreateNew()
        {
            throw new NotImplementedException();
        }

        public TEntity Add(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public TEntity Update(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public void Delete(TEntity entity)
        {
            throw new NotImplementedException();
        }

        public bool BindEntity(TEntity entity, IValueProvider valueProvider, string prefix = null)
        {
            throw new NotImplementedException();
        }
        public bool BindEntity(TEntity entity, IValueProvider valueProvider, string prefix, IEnumerable<string> includeProperties, IEnumerable<string> excludeProperties = null)
        {
            throw new NotImplementedException();
        }

        #endregion

        #endregion base notimplemented
    }
}